<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div id='app'>
        <div @click.capture="parent">
            parent
            <div @click="son">son 
                <div @click.self="grandSon">grandSon</div>
            </div>
        </div>
        <input type="text" v-model.lazy="n">
        <span>{{n}}</span>
    </div>
</body>
</html>
<script src="vue.js"></script>
<script>
    let vm = new Vue({
        el:'#app',
        data:{
            n:"1"
        },
        methods:{
            parent(){
                alert("parent")
            },
            son(){
                alert('son')
            },
            grandSon(){
                alert('grandSon')
            }
        }
    })
</script>

